Memory Device Having Multiple Power Modes

ABSTRACT

A memory device having a memory core is described. The memory device includes a clock receiver circuit, a first interface to receive a read command, a data interface, and a second interface to receive power mode information. The data interface is separate from the first interface. The second interface is separate from the first interface and the data interface. The memory device has a plurality of power modes, including a first mode in which the clock receiver circuit, first interface, and data interface are turned off; a second mode in which the clock receiver is turned on and the first interface and data interface are turned off; and a third mode in which the clock receiver and first interface are turned on. In the third mode, the data interface is turned on when the first interface receives the command, to output data in response to the command.

RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No. 12/975,322, filed Dec. 21, 2010, which is a continuation of U.S. patent application Ser. No. 12/608,209, filed Oct. 29, 2009, now U.S. Pat. No. 7,986,584, which is a continuation of U.S. patent application Ser. No. 11/107,504, filed Apr. 15, 2005, now U.S. Pat. No. 7,626,880, which is continuation of U.S. patent application Ser. No. 10/742,327 filed Dec. 18, 2003, now U.S. Pat. No. 7,320,082, which is a continuation of U.S. patent application Ser. No. 09/887,181 filed Jun. 21, 2001, now U.S. Pat. No. 6,701,446, which is a continuation of U.S. patent application Ser. No. 09/169,378, filed Oct. 9, 1998, now U.S. Pat. No. 6,263,448, which claims the benefit of U.S. Provisional Application Ser. No. 60/061,664 filed Oct. 10, 1997, which are incorporated by reference in their entirety.

A related application was filed on May 7, 1996, Ser. No. 08/648,300, entitled “Asynchronous Request/Synchronous Data Dynamic Random Access Memory”, assigned to the same assignee as this application, hereby incorporated by reference as background information.

BACKGROUND OF THE INVENTION

The present invention relates to power domains, and in particular to clock power domains in memory systems such as dynamic random access memories (DRAMs).

Power consumption is a constraint on computer systems both by virtue of limited power available in portable, battery-operated systems, and also limited heat dissipation for high power devices. As devices are made faster by increasing their clock speed, the power requirements also increase since clock signal lines, receivers, and other clock circuits consume more power and generate more heat as device clock rates increase.

Some memory systems operate asynchronously. Other memory systems, to increase the speed and bandwidth, operate synchronously using a clock signal. For these synchronous systems, clock power becomes an important issue at high frequencies. High power consumption by the clock signal can exceed thermal cooling limits of the package or system or cause excessive battery drain in portable devices.

In a prior Rambus dynamic random access memory (DRAM) system, illustrated in FIG. 1, three clock domains are used to control clock power use. FIG. 1 shows a memory core 11 and a memory interface 13. A first domain consists of the control circuitry 15, and a second domain is the write path 17 into the memory core. A third path is read data path 19. Table 1 indicates which clock domains are on for different power modes. The clock power to all three domains can be turned off in a standby mode. The control domain is turned on to enter an active mode. The write data path 17 is additionally turned on when needed for a write operation, an active write mode. Read data path 19 is turned on for a read operation, an active read mode. In a read operation, the control domain is turned on first, to allow the control signals for the read to be provided to the memory core. Since there will be some delay before the data is available, the output data path for the data to be read need not have its clock turned on until some period of time later. Thus, there is a latency between when the control logic is turned on and provided the clock signal to when the read data output path is turned on.

TABLE 1 Clock Domains power modes rclk sclk tclk standby off off off active on off off active read on off on active write on on off

In a prior Rambus system, the read data path is turned on automatically by the control logic when the control logic is activated for a read. Thus, a separate control signal does not need to be sent over the interface to turn on the read data path. A register will store a count corresponding to the latency from a RAS control signal to when read data will be available from the memory core, and this register value is used to control the latency of the clock turn-on for the read data path.

One disadvantage of the prior Rambus system is the additional latency required for turning on the control logic to exit the standby power mode. Since the interface control logic and datapath must be on before an incoming command can be processed and a memory operation started, the turn-on latency of the control logic and datapath directly adds to the memory access latency. This provides a power versus latency trade off.

Another method of limiting clock power consumption is to use a slower clock signal. This is done in microprocessors which have a low power or sleep mode. Typically, these are used in laptop computers in which the user can select a lower power mode, or the laptop will automatically enter the lower power or sleep mode in the absence of any user input within a predefined period of time.

SUMMARY OF THE INVENTION

The present invention provides a memory device with multiple clock domains. Separate clocks to different portions of the control circuitry create different clock domains. The different domains are sequentially turned on as needed to limit the power consumed. The turn on time of the domains is overlapped with the latency for the memory access to make the power control transparent to the user access of the memory core.

In one embodiment, the present invention separates out the RAS control logic into a separate clock domain from the CAS control logic. This smaller amount of RAS control logic can then be left on in a standby power mode to eliminate any visible latency from a RAS signal through to data access.

The write and read data paths are also in separate clock domains to further conserve power depending upon whether an operation is a read or write operation.

In one embodiment, the power control is implicit and transparent to the user. In a standby mode, a RAS signal will cause the control logic associated with the RAS control logic to activate the CAS clock domain an appropriate latency after receipt of the RAS signal without any further control over the memory interface required. When a CAS read or write signal is received, that will implicitly, or automatically, cause the read or write clock domain to be turned on an appropriate latency after the CAS signal.

In yet another embodiment of the invention, the memory device can dynamically switch between a fast and a slow clock depending upon the needed data bandwidth. The data bandwidth across the memory interface can be monitored by the memory controller, and when it drops below a certain threshold, a slower clock can be used. The clock speed can be dynamically increased as the bandwidth demand increases. Thus, rather than a coarse switch between a slow or fast clock speed depending upon user activity, clock speed can be switched automatically depending upon data access bandwidth requirements.

For a further understanding of the nature and advantages of the invention, reference should be made to the following description taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a prior art memory system with multiple clock domains.

FIG. 2A is a block diagram of a memory system according to one embodiment of the invention.

FIG. 2B is a diagram illustrating memory operation pipelining in accordance with the invention.

FIG. 3 is a block diagram of one embodiment of the segmentation of the control logic into clock domains according to the access pipelining of FIG. 2.

FIG. 4 is a block diagram of an alternate embodiment of FIG. 3 wherein the control logic is broken into two clock domains.

FIG. 5 is a block diagram of multiple control and data access clock domains according to one embodiment of the invention.

FIG. 6 is a timing diagram illustrating the sequencing of the clock domains of FIG. 5.

FIGS. 7, 8 and 9 illustrate three embodiments for dynamically varying the clock speed in accordance with data bandwidth.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 2A shows a memory system 10 which is controlled by a controller 12 over an interconnect bus 14 to a series of RDRAMs (Rambus dynamic random access memories) 16. The interconnect bus 14 includes two nine bit data busses 18 (BusDataA and BusDataB), and an eight bit primary control bus (RQ) 20. A clock 22 is provided in one direction along a transmit line 24 (TClk), and loops back along a receive clock line 26 (RClk).

In addition a low power, serial daisy-chained control interface is provided with daisy-chained segments 28 and a return segment 30. In other embodiments, the control sideband 28, 30 may be a bus instead of daisy-chained. In a powered down or nap mode, the primary control bus and data busses can be turned off with communication being initiated using the control sideband 28, 30.

Each RDRAM 16 includes multiple banks 32 of memory, each with associated core control logic 34. In addition, each chip includes interconnect logic 36.

FIG. 2B illustrates the pipelining of memory operations used in the present invention. As can be seen, the memory operations are broken up into five steps: precharge, sense, transfer, data and close. By breaking up the control and data transfer of a memory access operation in this manner, the operations can be pipelined to increase throughput. For a further description of the pipelining according to the invention, reference should be made to co-pending application Ser. No. 09/______, entitled “Pipelined Memory Device”, filed even date herewith and assigned to the same assignee, incorporated herein by reference.

FIG. 3 is a diagram illustrating one embodiment of interconnect logic 36 in a RDRAM. As can be seen, the control logic is broken up into segments, corresponding to the pipeline stages of FIG. 2B. In particular, there is a pre-charge input 38, a sense input 40, a transfer input 42, and a close input 44. The data pipeline of FIG. 2B is not shown, since FIG. 3 shows only control logic. FIG. 3 additionally shows a retire input 46. This retire input is used for a two-stage write operation, in which data is first written to an internal buffer, and is then written from the buffer into the memory core upon receipt of a “retire” command from the memory controller.

Each of the control inputs is provided on a serial line which is converted into parallel with a respective converter 48. The control signals are sent as a packet, which is decoded in respective packet decode logic 50. From there, decoded control signals are sent to either a row state machine 52, or a column state machine 54. The state machine will then send the appropriate control signals to the memory core control logic.

Not all of the control logic segments shown in FIG. 3 need to be operating at the same time. Even in a tightly pipelined operation, if reads and writes are alternating, for example, only one of the column read and column write control logic needs to be operating each cycle. Accordingly, each of the segments of FIG. 3 can be made a separate clock domain, with the clock to the domain turned on and off as necessary.

The turning off of clock domains as they are not needed significantly reduces power consumption and heat generation of the memory chip. As will be described below with respect to FIGS. 5 and 6, turning on and off of each clock domain is done with timing such that it is transparent to a memory access. In other words, the memory access will take no more time to complete than if all the clocks were left on all the time. An example of how the latency of the clock domain turn on is hidden behind the normal latency of the pipeline is set forth below with respect to FIGS. 5 and 6.

In one embodiment, a sense operation turns on the clock domain for both the precharge control and close logic. A transfer operation (by the column control logic, also sometimes called the CAS control logic) turns on the retire logic (i.e., labeled the column write control logic in FIG. 3). A precharge operation can turn on the column control logic, or parts of it. Signal line 55 in FIGS. 3 and 4 indicates that the control column logic activates the precharge control logic so as to restart precharging (i.e., of the sense amplifiers in the memory core) after the column state machine 54 has completed transfer of information between the sense amplifiers and the data input/output buffers.

Implicit control is also used to turn off clock domains not needed for later steps in a particular operation sequence. For example, a close operation can turn off secondary control domains, such as the transfer and retire logic in the column state machine.

FIG. 4 shows an alternate embodiment of the invention in which the control logic 36 is broken down into two clock domains, sense clock domain 56 and column clock domain 58. Row clock domain 56 receives and processes row control packets while column clock domain 58 receives and processes column control packets. Row control packets specify a row address and bank address for a sense operation (also known as a RAS operation), while the column control packets indicate column address and the type of column access operation (e.g., read or write), also known as a CAS operation, to be performed. Such an embodiment reflects a balance between the complexity and cost of more clock domains and the benefits of additional power savings. This embodiment recognizes that the major power savings is achieved by separating the RAS and CAS control operations.

FIG. 5 is a block diagram of one embodiment of the invention illustrating the different clock domains. FIG. 5 shows a RAS clock domain 60 including control logic 62 for the RAS signal and PCH (precharge) control logic. In addition, a clock receiver 64 is shown which connects to control bus line 66.

A second, CAS clock domain 68 includes CAS control logic 70 and a receiver 72. A write data clock domain 74 includes a write input pipeline 76 and a receiver 78. A read clock domain 80 includes a read output pipeline 82.

In the middle of FIG. 5 is shown a clock receiver 84 for the main clock used for the main control bus, lines 24 and 26 of FIG. 2A. This clock is synchronized with a delay lock loop (DLL) 86. Finally, a sideband control logic block 88 is shown.

In operation, sideband control logic 88 will always be on, even in a power down mode. In a power down mode, DLL 86 and clock receiver 84 can be turned off via a control line 90. Because of the significant latency required to turn on clock receiver 84 and DLL 86, an intermediate power mode, called a “nap” mode is used in which receiver 84 is on, but DLL 86 is in a low power configuration that provides faster synchronization time than when the DLL is entirely off. When in the nap mode, a memory access can be initiated with an appropriate control signal over sideband control line 28.

In an alternate embodiment, the sideband control logic 88 also receives RAS, or RAS and CAS control data for initiating the memory access, since clock domain 60 will be off when the memory access is initiated. When the sideband control logic 88 receives RAS, but not CAS, control data, the sideband control logic 88 will turn on CAS clock domain 68 so that it is ready when the subsequent CAS signal is sent.

A standby power mode is initiated by an appropriate control packet to sideband logic 88. This will cause DLL 86 to transition from the nap mode to an ON mode via a control signal on line 92. At the same time, RAS clock domain 60 will be turned on by the same line 92 by enabling the gating of the clock signal through AND gate 94. Thus, in standby mode, clock receiver 84 and DLL 86 are on as well as RAS clock domain 60. When a RAS signal is received, it can be immediately processed by RAS logic 62. In anticipation of the subsequent CAS signal, control logic 62 will provide a signal on a line 96 to turn on CAS clock domain 68. This will automatically, or implicitly, turn on the CAS clock domain. Thus, the user need not send special commands to turn on and off the clock domains but rather it is done automatically in accordance with the initiation of a memory access at the appropriate time. The signal on line 96 is sent after a period of time corresponding to the latency of the CAS signal with respect to the RAS signal. This period of time can be stored in a register in RAS control logic 62 or can be determined by the memory controller. The signal on line 96 activates receiver 72, and also turns on the CAS clock domain 68 by activating AND gate 98.

The registers for setting the latency for implicit control of clock power domains can be programmed upon device initialization, or can by dynamically varied. Alternately, instead of a register, the latency can simply be designed into the circuit.

When a CAS signal is received, it will either be a CASR (CAS read) or a CASW (CAS write) signal. If it is a CASW, CAS control logic 70 will activate the write data domain 74 via control line 100, after an appropriate latency corresponding to when the write data will be received from bus 18. Control line 100 turns on receiver 78, and also enables AND gate 102 to provide the clock signal to write data domain 74.

Similarly, for a CASR operation, CAS control logic 70 activates AND gate 106, via a signal on line 104, to provide a clock signal (TCLK) to read clock domain 80.

Thus, in the present invention, when the main control busses are in standby mode, memory accesses can be performed over the fast main control bus, with power mode transitions being implicitly controlled to make the power mode transitions transparent. In this way, core access latencies are overlapped with power turn-on latencies. By automatically turning on certain interface power modes when a particular core operation command is given, implicit power control is provided which minimizes latency and saves valuable control bandwidth (no explicit power control is needed). This will efficiently integrate power control into the memory access pipeline stream.

FIG. 6 illustrates these overlapped latencies. As shown in FIG. 6, the system of FIG. 5 is initially in a standby mode. When a RAS signal 110 is received, it will initiate the core row access as indicated by arrow 112. At the same time it will turn on the CAS clock domain as indicated by arrow 114. After a turn-on time and programmed latency, the CAS clock will be on at a point in time 116. At this point, the device is in what is considered an “active” mode. This turn-on time 116 is in advance of receiving a CASR signal 118 in its normal, pipeline timing. CAS-R signal 118 initiates a column read as indicated by arrow 120. The column read is initiated at a time tRCD after the row access, which is the latency of the row access. As also shown by an arrow 122, CASR signal 118 will also turn on the read data path after a time delay tDAC corresponding to the latency from the column read until the data is available. Thus, at a point in time 124, the read data path will be on (clock domain 80 of FIG. 5). The device will now be in “active read” mode. Again, the latency from the CAS-R signal to the read data path turn on time 124 matches the latency between the column read and when data is available as indicted by arrow 126.

For a write operation, similar latencies apply, as illustrated by CAS-W signal 128. This will initiate a column write operation as illustrated by arrow 130, and concurrently will provide a control signal as illustrated by line 132 to turn on the write data path. For a write operation, the data is coming in, and thus, the write data path must be turned on at a time 134 in advance of when the write data 136 is received over the data bus. Again, the latency of the power domain turn on of the write data path is transparent or hidden behind the latency of the write data arriving. The write data arriving is also pipelined so that it is not provided until needed for a column write in the memory core, as illustrated by arrow 137.

Slow Clock

FIG. 7-9 illustrate embodiments of the invention which allow the clock provided over the main control bus to be dynamically varied from fast to slow in accordance with the data bandwidth requirements. In addition, a slow clock could be used to initiate a memory access operation without requiring the DLL 86 of FIG. 5 to be on, since the slower clock may not need synchronization. The slow clock would enable the access to be started concurrently with the CAS control clock domain being turned on.

A slower clock speed results in lower power because the AC power to switch the capacitive load connected to the clocks is reduced proportionately to the frequency. Also, at reduced clock speeds, the device may not require a high power phase compensation circuit (DLL or PLL), which is typically required for high speed operation. Depending on the slow clock frequency, the interface may operate without phase compensation or use a lesser performance phase compensation circuit which consumes less power.

FIG. 7 illustrates one embodiment in which a memory 140 has an interface 142 with a slow clock input circuit 144 and a fast clock input circuit 146. Each input circuit includes a clock receiver 148 and a DLL or PLL 150. A multiplexer 152 selects whether a fast or slow clock is being used via a select control line 154.

The clock source 155 itself provides both a fast clock and slow clock through a multiplexer 156.

A circuit 158 for selecting between the slow and fast clocks is preferably provided either in the controller or in a memory interconnect or some other device connected to the bus.

By monitoring bus traffic, the amount of bandwidth being used is determined by a monitor circuit 158. When bus traffic exceeds a predefined threshold (i.e., more than a predefined number of memory accesses per second), the monitor circuit selects the fast clock, and otherwise it selects the slow clock. Depending on which clock is used, the fast or slow DLL or PLL and the unused receiver are preferably turned off to conserve power. In one embodiment, the monitor circuit 158 may be implemented using a programmed microprocessor, external to the memory circuit.

As referred to above, on a transition from a slow clock to a fast clock usage, during the latency of the fast clock turn on, operations can be occurring using the slow clock.

FIG. 8 is a variation of the circuit of FIG. 7 where two separate clock inputs are used, rather than a single, multiplexed line for the clock input.

FIG. 9 illustrates an alternate embodiment in which a single external fast clock is provided, which is internally divided using a clock divider circuit 160 to produce the slow clock.

As will be understood by those skilled in the art, the present invention may be embodied in other specific forms without departing from the spirit or central characteristics thereof. Accordingly, the foregoing description is intended to be illustrative, but not limiting, of the scope of the invention which is set forth in the following claims. 

What is claimed is:
 1. A memory controller for controlling a memory device that includes a clock receiver, a command interface, and a data interface, the memory controller comprising: an interface to provide a command that specifies a write operation and data associated with the write operation after a programmable latency period transpires from when the command is provided; and an interface to provide power mode information that controls transitions between a plurality of power modes, wherein for each power mode of the plurality of power modes, less power is consumed than the amount of power consumed during the write operation, the plurality of power modes comprising: a mode in which the clock receiver is on and the data interface is off; and a mode in which the clock receiver is off and the data interface is off.
 2. The memory controller of claim 1, wherein: the mode in which the clock receiver is on and the data interface is off is a nap mode; and the mode in which the clock receiver is off and the data interface is off is a powerdown mode.
 3. The memory controller of claim 2, wherein: during the nap mode, a locked loop circuit of the memory device is in a lower power consumption configuration than when the locked loop circuit is on; and during the powerdown mode, the locked loop circuit of the memory device is off.
 4. The memory controller of claim 1, wherein the interface that provides the command is configured to provide, to the memory device via the command interface, address information associated with the write operation.
 5. The memory controller of claim 4, wherein the interface that provides the command is further configured to transmit a column control packet that includes both the command that specifies the write operation and the address information.
 6. The memory controller of claim 1, wherein the interface that provides the command is further configured to transmit a control packet containing the power mode information via a sideband interface to the memory device.
 7. A memory controller for controlling a memory device that includes a memory core, a clock receiver, a command interface, and a data interface, the memory controller comprising: an interface to provide a command that specifies a write operation during which the memory device inputs data, the write operation consuming an amount of power, the interface to provide the data, associated with the write operation, to the data interface, after a programmable latency period from when the command is provided; and an interface to provide a signal that indicates to the memory device, a transition to an operating mode in which less power is consumed than the amount of power consumed during the write operation, wherein the transition is one of a plurality of transitions comprising: a transition in which the clock receiver is on, the command interface is turned off, and the data interface is turned off; and a transition in which the clock receiver is turned off, the command interface is turned off, and the data interface is turned off.
 8. The memory controller of claim 7, wherein: the transition in which the clock receiver is on and the data interface is turned off is a transition from an active mode to a nap mode; and the transition in which the clock receiver is turned off and the data interface is turned off is a transition from an active mode to a powerdown mode.
 9. The memory controller of claim 8, wherein: during the nap mode, a locked loop circuit of the memory device is in a lower power consumption configuration than when the locked loop circuit is on; and during the powerdown mode, the locked loop circuit of the memory device is off.
 10. The memory controller of claim 7, further configured to provide, to the memory device, address information associated with the write operation.
 11. The memory controller of claim 10, further configured to transmit a column control packet that includes both the command that specifies the write operation and the address information.
 12. A memory controller for controlling a memory device that includes a clock receiver, a locked loop circuit, a command interface, and a data interface separate from the command interface, the memory controller comprising an interface configured to: provide, to the command interface, a command that specifies a write operation during which the memory device inputs data, the write operation consuming an amount of power; provide the data, associated with the write operation, to the data interface, after a programmable latency period from when the command is provided; and provide information that controls transitions between a plurality of power modes, the power modes comprising: a mode in which the clock receiver is on, the data interface is off and the locked loop circuit is on; and a mode in which the clock receiver is off, the data interface is off, the locked loop circuit is off, and the command interface is off.
 13. The memory controller of claim 12, wherein: the mode in which the clock receiver is on, the data interface is off, and the locked loop circuit is on is a standby mode; and the mode in which the clock receiver is off, the data interface is off, and the locked loop circuit is off is a powerdown mode.
 14. The memory controller of claim 12, further configured to provide, to the memory device, address information associated with the write operation.
 15. The memory controller of claim 14, further configured to transmit a column control packet that includes both the command that specifies the write operation and the address information.
 16. The memory controller of claim 12, further configured to transmit a control packet containing the power mode information via a sideband interface to the memory device.
 17. A memory controller for controlling a memory device comprising a memory core, a locked loop circuit, and a clock receiver circuit to receive an external clock signal, wherein the memory controller comprises one or more interfaces configured to: provide to a first interface of the memory device, a command that specifies a write operation; after a programmable latency period transpires from when the command is provided to the first interface, provide to a second interface of the memory device that is separate from the first interface, write data associated with the write operation; and provide power mode information to the memory device, wherein the power mode information specifies a mode selected from the group of modes comprising: a first mode in which the clock receiver, the first interface, and the second interface are off; a second mode in which the clock receiver is on, the first interface and the second interface are off, and the locked loop circuit is in a first power state; and a third mode in which the clock receiver is on, second interface is off, and the locked loop circuit is in a second power state.
 18. The memory controller of claim 17, wherein: the first mode is a powerdown mode; the second mode is a nap mode; and the third mode is a standby mode.
 19. The memory controller of claim 17, wherein: the first power state of the locked loop circuit is a low power mode; and the second power state of the locked loop circuit is an on state.
 20. The memory controller of claim 17, further configured to provide, to the memory device, address information associated with the write operation.
 21. The memory controller of claim 20, further configured to transmit a column control packet that includes both the command that specifies the write operation and the address information.
 22. The memory controller of claim 17, further configured to transmit a control packet containing the power mode information to the memory device.
 23. A memory controller for controlling a memory device comprising a memory core, a locked loop circuit, and a clock receiver circuit to receive an external clock signal, wherein the memory controller comprises: an interface to provide: a command that specifies a write operation to a command interface of the memory device; and after a programmable latency period transpires from when the command is provided to the command interface, provide to a data interface of the memory device, write data associated with the write operation; and an interface to provide power mode information to the memory device, wherein the power mode information specifies a mode selected from the group of modes comprising: a first mode in which the clock receiver, the command interface, and the data interface are off; a second mode in which the clock receiver is on, the command interface and the data interface are off, and the locked loop circuit is in a first power state; and a third mode in which the clock receiver is on, the data interface is off, and the locked loop circuit is in a second power state.
 24. The memory controller of claim 23, wherein: the first mode is a powerdown mode; the second mode is a nap mode; and the third mode is a standby mode.
 25. The memory controller of claim 23, wherein: the first power state of the locked loop circuit is a low power mode; and the second power state of the locked loop circuit is an on state.
 26. The memory controller of claim 23, further configured to provide, to the memory device, address information associated with the write operation.
 27. The memory controller of claim 26, further configured to transmit a column control packet that includes both the command that specifies the write operation and the address information.
 28. The memory controller of claim 23, further configured to transmit a control packet containing the power mode information via a sideband interface to the memory device. 